<HTML>
<HEAD>
<title>org.mapdb - </title>
<link rel="stylesheet" href="../style.css">
</HEAD>
<BODY>
<a href=".">org.mapdb</a><br/>
<br/>
<h2>Package org.mapdb</h2>
<h3>Types</h3>
<table>
<tbody>
<tr>
<td>
<a href="-atomic/index.html">Atomic</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">Atomic</span></code><p><p> A small toolkit of classes that support lock-free thread-safe programming on single records. In essence, the classes here provide provide an atomic conditional update operation of the form: </p>
 <pre><code> boolean compareAndSet(expectedValue, updateValue); </code></pre> <p> This method (which varies in argument types across different classes) atomically sets a record to the <code>updateValue</code> if it currently holds the <code>expectedValue</code>, reporting <code>true</code> on success. Classes jere also contain methods to get and unconditionally set values. </p>
<p> The specifications of these methods enable to employ more efficient internal DB locking. CompareAndSwap operation is typically faster than using transactions, global lock or other concurrent protection. </p>
<p> Instances of classes Atomic.Boolean, Atomic.Integer, Atomic.Long, Atomic.String and Atomic.Var each provide access and updates to a single record of the corresponding type. Each class also provides appropriate utility methods for that type. For example, classes <code>Atomic.Long</code> and <code>Atomic.Integer</code> provide atomic increment methods. One application is to generate unique keys for Maps: </p>
 <pre><code> Atomic.Long id = Atomic.getLong("mapId"); map.put(id.getAndIncrement(), "something"); </code></pre> <p> Atomic classes are designed primarily as building blocks for implementing non-blocking data structures and related infrastructure classes. The <code>compareAndSet</code> method is not a general replacement for locking. It applies only when critical updates for an object are confined to a <emph>single</emph> record. </p>
<p> Atomic classes are not general purpose replacements for <code>java.lang.Integer</code> and related classes. They do <emph>not</emph> define methods such as <code>hashCode</code> and <code>compareTo</code>. (Because atomic records are expected to be mutated, they are poor choices for hash table keys.) Additionally, classes are provided only for those types that are commonly useful in intended applications. Other types has to be wrapped into general Atomic.Var </p>
<p> You can also hold floats using <code><a href="#">java.lang.Float#floatToIntBits</a></code> and <code><a href="#">java.lang.Float#intBitsToFloat</a></code> conversions, and doubles using <code><a href="#">java.lang.Double#doubleToLongBits</a></code> and <code><a href="#">java.lang.Double#longBitsToDouble</a></code> conversions. </p>
 </p>
</td>
</tr>
<tr>
<td>
<a href="-b-tree-map/index.html">BTreeMap</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">BTreeMap</span><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">, </span><span class="identifier">V</span><span class="symbol">&gt;</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-verifiable/index.html"><span class="identifier">Verifiable</span></a><span class="symbol">, </span><a href="http://docs.oracle.com/javase/6/docs/api/java/io/Closeable.html"><span class="identifier">Closeable</span></a><span class="symbol">, </span><a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html"><span class="identifier">Serializable</span></a><span class="symbol">, </span><a href="-concurrency-aware/index.html"><span class="identifier">ConcurrencyAware</span></a><span class="symbol">, </span><a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentNavigableMap.html"><span class="identifier">ConcurrentNavigableMap</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span><span class="symbol">, </span><a href="-concurrent-navigable-map-extra/index.html"><span class="identifier">ConcurrentNavigableMapExtra</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span></code><p>A scalable concurrent {@link ConcurrentNavigableMap} implementation.
The map is sorted according to the {@linkplain Comparable natural
ordering} of its keys, or by a {@link Comparator} provided at map
creation time.</p>
</td>
</tr>
<tr>
<td>
<a href="-b-tree-map-java/index.html">BTreeMapJava</a></td>
<td>
<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">BTreeMapJava</span></code><p>Java code for BTreeMap. Mostly performance sensitive code. </p>
</td>
</tr>
<tr>
<td>
<a href="-c-c/index.html">CC</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">CC</span></code><p>Compilation Configuration. Uses dead code elimination to remove `if(CONSTANT){code}` blocks </p>
</td>
</tr>
<tr>
<td>
<a href="-concurrency-aware/index.html">ConcurrencyAware</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">ConcurrencyAware</span></code><p>Concurrency aware, can verify that its configuration is thread safe</p>
</td>
</tr>
<tr>
<td>
<a href="-concurrent-navigable-map-extra/index.html">ConcurrentNavigableMapExtra</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">ConcurrentNavigableMapExtra</span><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">, </span><span class="identifier">V</span><span class="symbol">&gt;</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentNavigableMap.html"><span class="identifier">ConcurrentNavigableMap</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span><span class="symbol">, </span><a href="-map-extra/index.html"><span class="identifier">MapExtra</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span><span class="symbol">, </span><a href="-b-tree-map-java/-concurrent-navigable-map2/index.html"><span class="identifier">ConcurrentNavigableMap2</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span></code></td>
</tr>
<tr>
<td>
<a href="-d-b/index.html">DB</a></td>
<td>
<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">DB</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/io/Closeable.html"><span class="identifier">Closeable</span></a><span class="symbol">, </span><a href="-concurrency-aware/index.html"><span class="identifier">ConcurrencyAware</span></a></code><p>A database with easy access to named maps and other collections.</p>
</td>
</tr>
<tr>
<td>
<a href="-d-b-maker/index.html">DBMaker</a></td>
<td>
<code><span class="keyword">object </span><span class="identifier">DBMaker</span></code></td>
</tr>
<tr>
<td>
<a href="-data-i-o/index.html">DataIO</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">DataIO</span></code><p>Various IO classes and utilities.. </p>
</td>
</tr>
<tr>
<td>
<a href="-data-input2/index.html">DataInput2</a></td>
<td>
<code><span class="keyword">abstract</span> <span class="keyword">class </span><span class="identifier">DataInput2</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/io/DataInput.html"><span class="identifier">DataInput</span></a></code><p>Used for serialization </p>
</td>
</tr>
<tr>
<td>
<a href="-data-output2/index.html">DataOutput2</a></td>
<td>
<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">DataOutput2</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/io/OutputStream.html"><span class="identifier">OutputStream</span></a><span class="symbol">, </span><a href="http://docs.oracle.com/javase/6/docs/api/java/io/DataOutput.html"><span class="identifier">DataOutput</span></a></code><p>Output of serialization </p>
</td>
</tr>
<tr>
<td>
<a href="-h-tree-map/index.html">HTreeMap</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">HTreeMap</span><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">, </span><span class="identifier">V</span><span class="symbol">&gt;</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentMap.html"><span class="identifier">ConcurrentMap</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span><span class="symbol">, </span><a href="-concurrency-aware/index.html"><span class="identifier">ConcurrencyAware</span></a><span class="symbol">, </span><a href="-map-extra/index.html"><span class="identifier">MapExtra</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span><span class="symbol">, </span><a href="-verifiable/index.html"><span class="identifier">Verifiable</span></a><span class="symbol">, </span><a href="http://docs.oracle.com/javase/6/docs/api/java/io/Closeable.html"><span class="identifier">Closeable</span></a></code><p>Concurrent HashMap which uses IndexTree for hash table</p>
</td>
</tr>
<tr>
<td>
<a href="-index-tree-list/index.html">IndexTreeList</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">IndexTreeList</span><span class="symbol">&lt;</span><span class="identifier">E</span><span class="symbol">&gt;</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/AbstractList.html"><span class="identifier">AbstractList</span></a><span class="symbol">&lt;</span><span class="identifier">E</span><span class="symbol">?</span><span class="symbol">&gt;</span></code><p><a href="http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html">ArrayList</a> like structure backed by tree</p>
</td>
</tr>
<tr>
<td>
<a href="-index-tree-long-long-map/index.html">IndexTreeLongLongMap</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">IndexTreeLongLongMap</span></code><p>Primitive Sorted Map&lt;Long,Long.</p>
</td>
</tr>
<tr>
<td>
<a href="-map-extra/index.html">MapExtra</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">MapExtra</span><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">, </span><span class="identifier">V</span><span class="symbol">&gt;</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentMap.html"><span class="identifier">ConcurrentMap</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span></code><p>Extra methods for Map interface</p>
</td>
</tr>
<tr>
<td>
<a href="-map-modification-listener/index.html">MapModificationListener</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">MapModificationListener</span><span class="symbol">&lt;</span><span class="identifier">K</span>&nbsp;<span class="symbol">:</span>&nbsp;<span class="identifier">Any</span><span class="symbol">, </span><span class="identifier">V</span>&nbsp;<span class="symbol">:</span>&nbsp;<span class="identifier">Any</span><span class="symbol">&gt;</span></code><p>Callback interface for MapExtra modification notifications. </p>
</td>
</tr>
<tr>
<td>
<a href="-pump/index.html">Pump</a></td>
<td>
<code><span class="keyword">object </span><span class="identifier">Pump</span></code><p>Data streaming</p>
</td>
</tr>
<tr>
<td>
<a href="-queue-long/index.html">QueueLong</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">QueueLong</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-verifiable/index.html"><span class="identifier">Verifiable</span></a></code><p>FIFO Queue with option to remove element from middle</p>
</td>
</tr>
<tr>
<td>
<a href="-queue-long-take-until/index.html">QueueLongTakeUntil</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">QueueLongTakeUntil</span></code><p>Callback interface for QueueLong </p>
</td>
</tr>
<tr>
<td>
<a href="-serializer/index.html">Serializer</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">Serializer</span><span class="symbol">&lt;</span><span class="identifier">A</span>&nbsp;<span class="symbol">:</span>&nbsp;<span class="identifier">Any</span><span class="symbol">&gt;</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/Comparator.html"><span class="identifier">Comparator</span></a><span class="symbol">&lt;</span><span class="identifier">A</span><span class="symbol">&gt;</span></code><p>This interface specifies how Java Objects are serialized and de-serialized and also how objects are compared, hashed and tested for equality for use with MapDB. <p> Implementing classes do not have to be thread safe. </p>
</p>
</td>
</tr>
<tr>
<td>
<a href="-sorted-table-map/index.html">SortedTableMap</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">SortedTableMap</span><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">, </span><span class="identifier">V</span><span class="symbol">&gt;</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentMap.html"><span class="identifier">ConcurrentMap</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span><span class="symbol">, </span><a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentNavigableMap.html"><span class="identifier">ConcurrentNavigableMap</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span><span class="symbol">, </span><a href="-concurrent-navigable-map-extra/index.html"><span class="identifier">ConcurrentNavigableMapExtra</span></a><span class="symbol">&lt;</span><span class="identifier">K</span><span class="symbol">,</span>&nbsp;<span class="identifier">V</span><span class="symbol">&gt;</span></code><p>Read only Sorted Table Map. It stores data in table and uses binary search to find records</p>
</td>
</tr>
<tr>
<td>
<a href="-store/index.html">Store</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">Store</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store-immutable/index.html"><span class="identifier">StoreImmutable</span></a><span class="symbol">, </span><a href="-verifiable/index.html"><span class="identifier">Verifiable</span></a><span class="symbol">, </span><a href="-concurrency-aware/index.html"><span class="identifier">ConcurrencyAware</span></a></code><p>Stores records, mutable version</p>
</td>
</tr>
<tr>
<td>
<a href="-store-binary/index.html">StoreBinary</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">StoreBinary</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store/index.html"><span class="identifier">Store</span></a></code></td>
</tr>
<tr>
<td>
<a href="-store-binary-get-long/index.html">StoreBinaryGetLong</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">StoreBinaryGetLong</span></code><p>Binary operations performed on StoreBinary which retuns long </p>
</td>
</tr>
<tr>
<td>
<a href="-store-direct/index.html">StoreDirect</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">StoreDirect</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store-direct-abstract/index.html"><span class="identifier">StoreDirectAbstract</span></a><span class="symbol">, </span><a href="-store-binary/index.html"><span class="identifier">StoreBinary</span></a></code><p>Store which uses binary storage (file, memory buffer...) and updates records on place.
It has memory allocator, so it reuses space freed by deletes and updates.</p>
</td>
</tr>
<tr>
<td>
<a href="-store-direct-abstract/index.html">StoreDirectAbstract</a></td>
<td>
<code><span class="keyword">abstract</span> <span class="keyword">class </span><span class="identifier">StoreDirectAbstract</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store/index.html"><span class="identifier">Store</span></a></code><p>Common utils for StoreDirect, StoreWAL and StoreCached</p>
</td>
</tr>
<tr>
<td>
<a href="-store-immutable/index.html">StoreImmutable</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">StoreImmutable</span></code><p>Stores records</p>
</td>
</tr>
<tr>
<td>
<a href="-store-on-heap/index.html">StoreOnHeap</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">StoreOnHeap</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store/index.html"><span class="identifier">Store</span></a></code><p>Store which does not use serialization, but puts everything into on-heap Map.</p>
</td>
</tr>
<tr>
<td>
<a href="-store-read-only-wrapper/index.html">StoreReadOnlyWrapper</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">StoreReadOnlyWrapper</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store/index.html"><span class="identifier">Store</span></a></code><p>Wraps Store and throws <code>UnsupportedOperationException("Read-only")</code> on operations which would modify it</p>
</td>
</tr>
<tr>
<td>
<a href="-store-trivial/index.html">StoreTrivial</a></td>
<td>
<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">StoreTrivial</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store/index.html"><span class="identifier">Store</span></a></code><p>Store which serializes its content into primitive <code>Map&lt;Long,byte[]&gt;</code>.
It optionally persist its content into file, in this case it supports rollback and durability.</p>
</td>
</tr>
<tr>
<td>
<a href="-store-trivial-tx/index.html">StoreTrivialTx</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">StoreTrivialTx</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store-trivial/index.html"><span class="identifier">StoreTrivial</span></a><span class="symbol">, </span><a href="-store-tx/index.html"><span class="identifier">StoreTx</span></a></code></td>
</tr>
<tr>
<td>
<a href="-store-tx/index.html">StoreTx</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">StoreTx</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store/index.html"><span class="identifier">Store</span></a></code><p>Stores records, transactional version</p>
</td>
</tr>
<tr>
<td>
<a href="-store-w-a-l/index.html">StoreWAL</a></td>
<td>
<code><span class="keyword">class </span><span class="identifier">StoreWAL</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-store-direct-abstract/index.html"><span class="identifier">StoreDirectAbstract</span></a><span class="symbol">, </span><a href="-store-tx/index.html"><span class="identifier">StoreTx</span></a></code><p>StoreDirect with write ahead log</p>
</td>
</tr>
<tr>
<td>
<a href="-verifiable/index.html">Verifiable</a></td>
<td>
<code><span class="keyword">interface </span><span class="identifier">Verifiable</span></code><p>Class can verify its status and data integrity: collections, Stores...</p>
</td>
</tr>
<tr>
<td>
<a href="-write-ahead-log/index.html">WriteAheadLog</a></td>
<td>
<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">WriteAheadLog</span></code><p>WAL shared between StoreWAL </p>
</td>
</tr>
</tbody>
</table>
<h3>Exceptions</h3>
<table>
<tbody>
<tr>
<td>
<a href="-d-b-exception/index.html">DBException</a></td>
<td>
<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">DBException</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/RuntimeException.html"><span class="identifier">RuntimeException</span></a></code><p>Exception hierarchy for MapDB</p>
</td>
</tr>
</tbody>
</table>
</BODY>
</HTML>
